package com.gzz.orchid.common.boot.mybatis;

import com.gzz.orchid.common.boot.mybatis.conditices.QueryCondition;
import com.gzz.orchid.common.core.model.Pagination;
import com.gzz.orchid.common.core.model.QueryWrap;

import java.io.Serializable;
import java.util.List;

/**
 * @author higmd
 */
public interface BaseMapper<T> {
    /**
     * 根据 ID 查询
     */
    T getById(Serializable id);

    /**
     * 根据条件查询一条
     */
    T selectOneByCondition(QueryCondition condit);

    /**
     * 根据 ID数组查询
     */
    List<T> selectListByIds(Serializable[] ids);

    /**
     * 根据条件查询
     */
    List<T> selectListByCondition(QueryCondition condit);

    /**
     * 获取列表- 分页
     */
    List<T> selectListByPage(QueryWrap param, Pagination pager);

    /**
     * 插入一条记录
     */
    int insert(T entity);

    /**
     * 批量插入
     */
    int batchInsert(List<T> entityList);

    /**
     * 根据主键更新
     */
    int updateById(T entity);

    /**
     * 根据条件列表
     */
    int updateByCondition(T entity, QueryCondition condit);

    /**
     * 逻辑删除主键的
     */
    int removeByIds(Serializable[] ids);

    /**
     * 逻辑删除主键的
     */
    int removeByCondition(Serializable[] ids);

    /**
     * 物理删除主键的
     */
    int deleteByIds(Serializable[] ids);

    /**
     * 根据条件物理删除
     */
    int deleteByCondition(QueryCondition condition);
}
